#ifndef _CLSysErrorMsg_H_
#define _CLSysErrorMsg_H_

#include <string>

#include "CErrorMsg.h"

class CLSysErrorMsg : public CErrorMsg
{
public:
    typedef enum {LS_CONSEQUENT_UNEXPECTED_CHAR=0,LS_ANTEC_UNEXPECTED_CHAR,
                  LS_CONSEQUENT_UNEXPECTED_END,LS_EMPTY_CONSEQUENT_NOT_ALLOWED,
                  LS_BAD_PROBABILITY,LS_NO_NAME,LS_BAD_NAME,LS_NO_AXIOM,
                  LS_TOOMUCH_FLOATING_POINTS,LS_FLOAT_UNEXPECTED_CHAR} error_id_type;

    CLSysErrorMsg(error_id_type const err_id);
    CLSysErrorMsg(error_id_type const err_id, const char car);
    CLSysErrorMsg(error_id_type const err_id,std::string const& str_err);
    CLSysErrorMsg(error_id_type const err_id,std::string const& str_err,char const unx_char);

    char const* what();

private:
    std::string str_error;

    error_id_type error_id;
    std::string str;
    char unexpected_char;
};

#endif
